Skip to content

[3.14] gh-123018: Keep the libedit history file header when truncating (GH-157165) - #157173

Merged
gpshead merged 1 commit into
python:3.14from
miss-islington:backport-2638785-3.14
Sep 9, 2026
Merged

[3.14] gh-123018: Keep the libedit history file header when truncating (GH-157165)#157173
gpshead merged 1 commit into
python:3.14from
miss-islington:backport-2638785-3.14

Conversation

@miss-islington

@miss-islington miss-islington commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

libedit's history_truncate_file() keeps the last N lines of the file,
which drops the "HiStOrY_V2" header line that its own write_history()
emits and that its read_history() requires. So on a libedit build,
readline.write_history_file() or readline.append_history_file() after
readline.set_history_length() produced a file that
readline.read_history_file() rejected with EINVAL.

Under the libedit emulation, truncate the file ourselves and keep the
header, resolving the default "~/.history" the same way libedit does.
Apple's libedit fork already preserves the header, so the workaround is
not compiled on macOS.
(cherry picked from commit 2638785)

Co-authored-by: Gregory P. Smith 68491+gpshead@users.noreply.github.com

…pythonGH-157165)

libedit's history_truncate_file() keeps the last N lines of the file,
which drops the "_HiStOrY_V2_" header line that its own write_history()
emits and that its read_history() requires.  So on a libedit build,
readline.write_history_file() or readline.append_history_file() after
readline.set_history_length() produced a file that
readline.read_history_file() rejected with EINVAL.

Under the libedit emulation, truncate the file ourselves and keep the
header, resolving the default "~/.history" the same way libedit does.
Apple's libedit fork already preserves the header, so the workaround is
not compiled on macOS.
(cherry picked from commit 2638785)

Co-authored-by: Gregory P. Smith <68491+gpshead@users.noreply.github.com>
@gpshead
gpshead enabled auto-merge (squash) September 8, 2026 06:48
@gpshead
gpshead merged commit e87da80 into python:3.14 Sep 9, 2026
90 of 92 checks passed
@miss-islington
miss-islington deleted the backport-2638785-3.14 branch September 9, 2026 16:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants